﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace OnlineOpinionAnalysis.Shared.Models
{
     public static class TidHelper
    {
        public static readonly Dictionary<int, string> TidName = new()
        {
            { 1,"动画(主分区)" },
            { 24,"MAD·AMV" },
            { 25,"MMD·3D" },
            { 47,"短片·手书·配音" },
            { 210,"手办·模玩" },
            { 86,"特摄" },
            { 253,"动漫杂谈" },
            { 27,"综合" },

            //{ 13,"番剧(主分区)" },
            //{ 51,"资讯" },
            //{ 152,"官方延伸" },
            //{32,"完结动画" },
            //{ 33,"连载动画" },

            { 3  ,"音乐(主分区)" },
            {28,"原创音乐" },
            {31,"翻唱" },
            {30,"VOCALOID·UTAU" },
            { 59,"演奏" },
            { 193,"MV" },
            {29  ,"音乐现场" },
            { 130,"音乐综合" },
            {243,"乐评盘点" },
            { 244,"音乐教学" },

            //{ 167  ,"国创(主分区)" },
            //{ 153,"国产动画" },
            //{168,"国产原创相关" },
            //{ 169,"布袋戏" },
            //{ 170,"资讯" },
            //{ 195,"动态漫·广播剧" },

            { 4,"游戏(主分区)" },
            { 17,"单机游戏" },
            { 171,"电子竞技" },
            { 172,"手机游戏" },
            { 65,"网络游戏" },
            {173,"桌游棋牌" },
            { 121,"GMV" },
            { 136,"音游" },
            { 19,"Mugen" },

            { 36,"知识(主分区)" },
            { 201,"科学科普" },
            { 124,"社科·法律·心理" },
            { 228,"人文历史" },
            { 207,"财经商业" },
            { 208,"校园学习" },
            { 209,"职业职场" },
            { 229,"设计·创意" },
            { 122,"野生技术协会" },

            { 188,"科技(主分区)" },
            { 95,"数码" },
            { 230,"软件应用" },
            { 231,"计算机技术" },
            { 232,"科工机械" },
             { 233,"极客DIY" },

            { 160,"生活(主分区)" },
            { 138,"搞笑" },
            { 250,"出行" },
            { 251   ,"三农" },
            { 239,"家居房产" },
            { 161,"手工" },
            { 162,"绘画" },
            { 21,"日常" },
        };
        public static readonly Dictionary<int,int> TidChildren = new()
        {
			{ 1,1 },
			{ 24,1},
			{ 25,1 },
			{ 47,1 },
			{ 210,1 },
			{ 86,1 },
			{ 253,1 },
			{ 27,1 },

            { 3  ,3 },
			{28,3 },
			{31,3},
			{30,3 },
			{ 59,3 },
			{ 193,3 },
			{29  ,3 },
			{ 130,3 },
			{243,3},
			{ 244,3 },

            { 4,4 },
			{ 17,4},
			{ 171,4},
			{ 172,4},
			{ 65,4 },
			{173,4},
			{ 121,4},
			{ 136,4},
			{ 19,4 },

			{ 36,36 },
			{ 201,36},
			{ 124,36 },
			{ 228,36},
			{ 207,36},
			{ 208,36},
			{ 209,36},
			{ 229,36 },
			{ 122,36},

			{ 188,188},
			{ 95,188 },
			{ 230,188},
			{ 231,188},
			{ 232,188},
			 { 233,188 },

			{ 160,160},
			{ 138,160 },
			{ 250,160},
			{ 251,160},
			{ 239,160},
			{ 161,160 },
			{ 162,160 },
			{ 21,160},
		};

        public static bool TryTidToName(int tid,out string name)
        {
            if(TidName.TryGetValue(tid,out name))
            {
                return true;
            }
            else
            {
                return false;
            }
        }
		public static string TidToName(int tid)
        {
            return TidName[tid];
		}

		public static bool TryNameToTid( string name, out int tid)
        {
            if (TidName.ContainsValue(name))
            {
                tid=TidName.Where(tidName=>tidName.Value==name).FirstOrDefault().Key;
                return true;
            }
            else
            {
                tid = -1;
                return false;
            }
        }

        public static int GetTidMaster(int tid)
        {
            if (TidChildren.ContainsKey(tid))
            {
                return TidChildren[tid];
            }
            else
            {
                Console.WriteLine("错误的tid序号!");
                return -1;
            }
        }

        public static List<int> GetChildByMasterTid(int masterTid)
        {
            var children=TidChildren.Where(item=>item.Value==masterTid);
            List<int> result = new(children.Count());
            foreach (var item in children)
            {
                result.Add(item.Key);
            }
            return result;
        }
    }
}
